package com.shisan.tingshu.album.api;

import com.shisan.tingshu.common.minio.service.FileUploadService;
import com.shisan.tingshu.common.result.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@Tag(name = "上传管理接口")
@RestController
@RequestMapping("api/album")
public class FileUploadApiController {

    @Autowired
    private FileUploadService fileUploadService;

    @Operation(summary = "图片文件的上传")
    @PostMapping("/fileUpload")
    // MultipartFile 是 SpringMVC 提供的文件上传对象，参数名必须是 file，因为此处前端用表单传递时对应的参数名就是 file
    // 用 file.getOriginalFilename() 获取到的文件名与前端上传的文件名不一致，因为 MultipartFile 会自动重命名文件
    // 此处选择用分布式文件系统 MinIO 保存文件
    public Result fileUpload(MultipartFile file){
        String picUrl = fileUploadService.fileUploadService(file);
        return Result.ok(picUrl);
    }
}
